package com.cj.mobile.iabp.mvp.contract;

import com.cj.mobile.iabp.mvp.model.entity.AppUpdate;
import com.cj.mobile.iabp.mvp.model.entity.StatisticsResponse;
import com.jess.arms.mvp.IModel;
import com.jess.arms.mvp.IView;

import java.util.List;

import io.reactivex.Observable;


/**
 * ================================================
 * Description:
 * <p>
 * Created by MVPArmsTemplate on 12/11/2019 15:30
 * ================================================
 */
public interface MainContract {
    //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
    interface View extends IView {
        /**
         * 升级询问
         */
        void askDialog(AppUpdate info);

        // 显示提交Loding
        void showLoadingSubmit();

        // 隐藏提交Loding
        void hideLoadingSubmit();

        // 点击首页
        void onClickHome();

        void loadStatistics(int install, int remove, List<String> sec2, List<String> sec3, String[] title);
    }

    //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
    interface Model extends IModel {

        // 获取APP版本信息
        Observable<AppUpdate> getVersion(String type);

        // 获取统计数量
        Observable<StatisticsResponse> getStatisticsCounnt();
    }
}
